#include<iostream>

//用来实现饿汉模式

//只能有一个对象，在程序初始化阶段完成对象的初始化操作，不能在类外声明对象-只能通过固定接口访问

class Singleton {
private:
  int _data;
private:
  static Singleton _eton;   //类内定义静态对象--保证在初始化阶段完成初始化操作
  Singleton(){
    _data=100;         //构造函数私有化，意味着将无法在类外构造对象
  }

public:
  int get_data(){return _data;}
  static Singleton* GetInstance(){
     return &_eton;           //通过固定接口来实现访问
  }
};

Singleton Singleton::_eton;     //静态成员变量在类外进行定义

int main()
{ 
  Singleton* eton=Singleton::GetInstance();     //只能在类外获取
  std::cout<<eton->get_data()<<std::endl;
  return 0;
}

